﻿using System;
using System.Collections.Generic;
using System.Text;

namespace IRepository.SystemDefault
{
    /*
     * 指定 constr 是为了方便分布式或者读写分离
     * 这了的 constr 不一定是 数据库的链接字符串，也可以是 nosql 的ip和端口地址，具体是什么就看具体实现了
     * 
     */
    /// <summary>
    /// 数据队列接口
    /// 提供指定内容的队列存取
    /// </summary>
    public interface IDataQueueRepository
    {
        /// <summary>
        /// 从队列中获取采集 原始地址（未判断重复之前的地址）
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        T GetOriginalUrlInfo<T>(int configID, string constr);
        /// <summary>
        /// 向队列中插入待采集的原始地址（未判断重复之前的地址）
        /// </summary>
        /// <param name="data"></param>
        void AddOriginalCollectUrlInfo(int configID, object data, string constr);


        /// <summary>
        /// 从队列中获取采集 地址
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        T GetCollectUrlInfo<T>(int configID, string constr);
        /// <summary>
        /// 向队列中插入待采集的地址
        /// </summary>
        /// <param name="data"></param>
        void AddCollectCollectUrlInfo(int configID, object data, string constr);

        /// <summary>
        /// 添加待解析页面
        /// </summary>
        /// <param name="data"></param>
        /// <param name="constr"></param>
        void AddAnalyzePageInfo(int configID, object data, string constr);

        /// <summary>
        /// 获取待解析页面
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="constr"></param>
        /// <returns></returns>
        T GetAnalyzePageInfo<T>(int configID, string constr);
    }
}
